﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.IO;

namespace Filmy.Kontroler
{
    class Imdb : ZewnetrznaBaza
    {

        //pobranie danych za pomoca bazy imdb w sposob tradycyjny
        public void DajDaneImdb(string tytulDoSzukania)
        {
            Cursor.Current = Cursors.WaitCursor;
            tytulDoSzukania = tytulDoSzukania.Replace(":", "");
            tytulDoSzukania = tytulDoSzukania.Replace(";", "");
            tytulDoSzukania = tytulDoSzukania.Replace(",", "");
            tytulDoSzukania = tytulDoSzukania.Replace(".", "");
            if (tytulDoSzukania != "")
            {
                string zrodlo;
                zrodlo = dajZrodlo2("http://www.imdbapi.com/?t=" + tytulDoSzukania.Replace(" ", "+"));
                if (zrodlo.Length > 30)
                {
                    tytul = wyszukaj(ref zrodlo, "\"Title\":\"", "\"");
                    tytulOryginalny = tytul;
                    rokProdukcji = wyszukaj(ref zrodlo, "\"Year\":\"", "\"");
                    gatunki = wyszukaj(ref zrodlo, "\"Genre\":\"", "\"");
                    rezyserowie = wyszukaj(ref zrodlo, "\"Director\":\"", "\"");
                    opis = wyszukaj(ref zrodlo, "\"Plot\":\"", "\"");
                    obrazek = PobierzPlik(wyszukaj(ref zrodlo, "\"Poster\":\"", "\""), tytulDoSzukania);
                    opcjaWyswietlania = PictureBoxSizeMode.StretchImage;
                    if (obrazek == "")
                    {
                        obrazek = "BrakObrazka.png";
                        opcjaWyswietlania = PictureBoxSizeMode.Zoom;
                    }
                    czasTrwania = wyszukaj(ref zrodlo, "\"Runtime\":\"", "\"");
                    ocena = wyszukaj(ref zrodlo, "\"Rating\":\"", "\"");
                    link = wyszukaj(ref zrodlo, "\"ID\":\"", "\"");
                    link = "http://www.imdb.com/title/" + link;
                    int dl = 3;
                    int hr = czasTrwania.IndexOf("hr ");
                    if (hr == -1)
                    {
                        hr = czasTrwania.IndexOf("hrs");
                        dl++;
                    }
                    int min = 0;
                    if (czasTrwania.Length > (hr + 3))
                        min = int.Parse(czasTrwania.Substring(hr + dl, 2));
                    int czas = int.Parse(czasTrwania.Substring(0, 1)) * 60 + min;
                    czasTrwania = czas.ToString();
                }
                else
                {
                    throw new Exception("Nic nie znaleziono");
                }
            }
        }

        //pobranie danych za pomoca bazy imdb za pomoca XML
        public void DajDaneImdbXML(string tytulDoSzukania)
        {
            Cursor.Current = Cursors.WaitCursor;
            tytulDoSzukania = tytulDoSzukania.Replace(":", "");
            tytulDoSzukania = tytulDoSzukania.Replace(";", "");
            tytulDoSzukania = tytulDoSzukania.Replace(",", "");
            tytulDoSzukania = tytulDoSzukania.Replace(".", "");
            if (tytulDoSzukania != "")
            {
                string zrodlo;
                zrodlo = dajZrodlo2("http://www.imdbapi.com/?t=" + tytulDoSzukania.Replace(" ", "+")+"&r=xml");
                StreamWriter sw = new StreamWriter("dane.xml", false);
                sw.WriteLine(zrodlo);
                sw.Flush();
                sw.Close();
                DataSet ds = new DataSet();
                ds.ReadXml("dane.xml");
                DataRow imdbRow = ds.Tables["movie"].Rows[0];
                tytul = imdbRow["title"].ToString();
                tytulOryginalny = tytul;
                rokProdukcji = imdbRow["year"].ToString();
                gatunki = imdbRow["genre"].ToString();
                rezyserowie = imdbRow["director"].ToString();
                opis = imdbRow["plot"].ToString();
                obrazek = imdbRow["poster"].ToString();
                czasTrwania = imdbRow["runtime"].ToString();
                ocena = imdbRow["rating"].ToString();
                link = "http://www.imdb.com/title/" + imdbRow["id"].ToString();
                int dl = 3;
                int hr = czasTrwania.IndexOf("hr ");
                if (hr == -1)
                {
                    hr = czasTrwania.IndexOf("hrs");
                    dl++;
                }
                int min = 0;
                if (czasTrwania.Length > (hr + 3))
                    min = int.Parse(czasTrwania.Substring(hr + dl, 2));
                int czas = int.Parse(czasTrwania.Substring(0, 1)) * 60 + min;
                czasTrwania = czas.ToString();
                opcjaWyswietlania = PictureBoxSizeMode.StretchImage;
            }
        }
    }
}
